/*
 * @Description: 
 * @Author: chaixinyu
 * @Date: 2023-01-08 20:26:05
 * @LastEditors: chaixinyu
 * @LastEditTime: 2023-01-10 19:34:09
 */

// 您可以通过put接口将本地文件上传到OSS。
let fs = require('fs');

// 初始化Client
let co = require('co');
let OSS = require('ali-oss');
let client = new OSS({
    // yourregion填写Bucket所在地域。以华东1（杭州）为例，Region填写为oss-cn-hangzhou。
    region: 'oss-cn-hangzhou',
    // 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户。
    accessKeyId: 'LTAI5tG5s2N5byfpS6piUp6s',
    accessKeySecret: '0lWUT8xG9kVhR32DAOh0Z01hUV28TZ',
});

let ali_oss = {
    bucket: 'cxy-images', // Bucket名称
};

const uploadFile = (req, res) => {
    // 文件路径
    let filePath = './' + req.file.path;

    // 文件类型
    let temp = req.file.originalname.split('.');
    let fileType = temp[temp.length - 1];
    let lastName = '.' + fileType;

    // 构建图片名
    let fileName = Date.now() + lastName;

    // 图片重命名
    fs.rename(filePath, fileName, (err) => {

        if (err) {
            res.json({
                code: 403,
                message: '文件写入失败'
            })
        } else {
            let localFile = './' + fileName;

            // 上传到指定目录（/imgs/2021-11-27/1637994928002.jpg）
            // 将文件上传到指定目录,需要输入目录名称。
            // 若输入的目录不存在,OSS将自动创建对应的文件目录并将文件上传到该目录中。
            let key = `uploadImg/${fileName}`;

            // 阿里云 上传文件
            co(async function() {

                client.useBucket(ali_oss.bucket);
                let result = await client.put(key, localFile);

                // 上传成功返回图片路径域名-域名修改成自己绑定到oss的
                let imageSrc = 'http://cxy-g47.top/' + result.name;
                // let imageSrc = result.name;


                // 上传之后删除本地文件
                fs.unlinkSync(localFile);

                res.json({
                    code: 200,
                    message: '上传成功',
                    location: imageSrc
                })

            }).catch(function(err) {

                // 上传之后删除本地文件
                fs.unlinkSync(localFile);

                res.json({
                    code: 403,
                    message: '上传失败',
                    error: err
                })
            })
        }
    })

}
module.exports = {
    uploadFile,
}